/* eslint react/no-multi-comp:0, no-console:0 */

import BaseMixin from '../../_util/BaseMixin'
import createDOMForm from '../src/createDOMForm'
import { Modal } from 'ant-design-vue'
import { regionStyle, errorStyle } from './styles'

const Form = {
  mixins: [BaseMixin],
  props: {
    form: Object,
  },

  data () {
    return { visible: false }
  },
  methods: {
    onSubmit (e) {
      e.preventDefault()
      this.form.validateFieldsAndScroll((error, values) => {
        if (!error) {
          console.log('ok', values)
        } else {
          console.log('error', error, values)
        }
      })
    },

    onCancel () {
      this.setState({ visible: false })
    },

    open () {
      this.setState({ visible: true })
    },
  },

  render () {
    const { getFieldProps, getFieldError } = this.form
    return (
      <div style={{
        margin: '20px',
      }}>
        <h2>modal</h2>
        <Modal
          visible={this.visible}
          bodyStyle={{
            height: '200px',
            overflow: 'auto',
          }}
          onCancel={this.onCancel}
          title='modal'>
          <div ref='dialogContent'>
            <form onSubmit={this.onSubmit}>
              <input
                {...getFieldProps('required', { rules: [{ required: true, message: '必填' }] })}/>
              <div style={errorStyle}>
                {getFieldError('required')
                  ? getFieldError('required').join(',')
                  : <b style={{
                    visibility: 'hidden',
                  }}>1</b>}
              </div>
              <div style={{
                marginTop: '300px',
              }}>
                <button>submit</button>
              </div>
            </form>
          </div>
        </Modal>
        <div style={regionStyle}>
          <button onClick={this.open}>open</button>
        </div>
      </div>
    )
  },
}
export default createDOMForm()(Form)
